import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QHBoxLayout
from PyQt5.QtGui import QIcon

class quit_application(QMainWindow):
    def __init__(self):
        # 先初始化父类
        super(quit_application, self).__init__()
        # 这里就可以开始创建UI界面了
        self.setWindowTitle("HalloWorld !!")
        # 设置界面大小
        self.setGeometry(300, 300, 300, 300)
        # 设置窗口图标
        self.setWindowIcon(QIcon(r'.\reference\controls\images\Basilisk.ico'))
        # 设置控件
        self.btn1 = QPushButton('点我就会退出')
        self.btn2 = QPushButton('别点我，我只是装饰')
        self.btn3 = QPushButton('别点我')
        self.btn1.clicked.connect(self.btn1_cb)
        self.btn2.clicked.connect(self.btn2_cb)
        self.btn3.clicked.connect(self.btn3_cb)
        # 把控件添加到布局袋子里
        self.layout1 = QHBoxLayout()
        self.layout1.addWidget(self.btn1)
        self.layout1.addWidget(self.btn2)
        self.layout1.addWidget(self.btn3)
        # 然后创建一个主窗口对象
        self.main_widget = QWidget()
        # 设置布局
        self.main_widget.setLayout(self.layout1)
        # 设置中心窗口为此窗口
        self.setCentralWidget(self.main_widget)


    def btn1_cb(self):
        # 获得此Application的相关信息
        self.sender1 = self.sender()
        # 看看这个sender里面是什么东西
        print("Sender is :\n"+self.sender1.text())
        # 创建目前活动窗口的实例句柄
        app = QApplication.instance()
        # 关闭实例
        app.quit()

    def btn2_cb(self):
        # sender包括被调用控件的名字B
        print("Sender is :\n"+self.sender().text())

    def btn3_cb(self):
        print("Hallo World !!\n")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    instance = quit_application()
    instance.show()
    # 这里就是创建一个主循环
    sys.exit(app.exec_())
